package com.itheima.reggie.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itheima.reggie.common.R;
import com.itheima.reggie.dto.DishDto;
import com.itheima.reggie.dto.SetmealDto;
import com.itheima.reggie.entity.Category;
import com.itheima.reggie.entity.Dish;
import com.itheima.reggie.entity.Setmeal;
import com.itheima.reggie.service.CategoryService;
import com.itheima.reggie.service.SetmealDishService;
import com.itheima.reggie.service.SetmealService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;

@Slf4j
@RestController
@RequestMapping("/setmeal")
public class SetmealController {
    @Autowired
    private SetmealDishService setmealDishService;
    @Autowired
    private SetmealService setmealService;
    @Autowired
    private CategoryService categoryService;

//    /**
//     * 保存套餐信息
//     *
//     * @return
//     */
//    @PostMapping
//    public R<String> save(@RequestBody SetmealDto setmealDto) {
//        log.info("套餐信息：{}", setmealDto);
//        setmealService.saveWithDish(setmealDto);
//        return R.success("套餐信息保存成功");
//    }
//
//    /**
//     * 套餐分页查询
//     * @param page
//     * @param pageSize
//     * @param name
//     * @return
//     */
//    @GetMapping("/page")
//    public R<Page> page(int page, int pageSize, String name) {
//        //完成套餐对象的分页查询
//        Page<Setmeal> setmealPage = new Page<>(page, pageSize);
//        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
//        queryWrapper.like(name != null, Setmeal::getName, name);
//        //排序
//        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
//        setmealService.page(setmealPage, queryWrapper);
//        //套餐对象拷贝
//        //创建空的页面对象
//        Page<SetmealDto> setmealDtoPage = new Page<>();
//        BeanUtils.copyProperties(setmealPage, setmealDtoPage, "records");
//        //完成分页对象中套餐名称的替换
//        List<Setmeal> records = setmealPage.getRecords();
//        List<SetmealDto> list = records.stream().map((setmeal) -> {
//            //将setmeal信息拷贝到setmealdto内
//
//            SetmealDto setmealDto = new SetmealDto();
//            BeanUtils.copyProperties(setmeal, setmealDto);
//            Long categoryId = setmeal.getCategoryId();
//            Category category = categoryService.getById(categoryId);
//
//            if (category != null) {
//                String categoryName = category.getName();
//                setmealDto.setCategoryName(categoryName);
//            }
//            return setmealDto;
//        }).collect(Collectors.toList());
//        //设置dishDto的records属性
//        setmealDtoPage.setRecords(list);
//        //设置dishDto的total属性
//        //setmealDtoPage.setTotal(setmealPage.getTotal());
//        return R.success(setmealDtoPage);
//    }
//    /**
//     * 删除套餐
//     * @param ids
//     * @return
//     */
//    @DeleteMapping
//    public R<String> delete(@RequestParam List<Long> ids){
//        log.info("ids:{}",ids);
//        setmealService.removeWithDish(ids);
//        return R.success("套餐数据删除成功");
//    }
//    @GetMapping("/list")
//    public R<List<Setmeal>> list(Setmeal setmeal){
//        //查询两部曲:非空判断条件+排序(以更新时间降序,以什么升序)
//        LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper = new LambdaQueryWrapper<>();
//        setmealLambdaQueryWrapper.eq(setmeal.getCategoryId()!=null,Setmeal::getCategoryId,setmeal.getCategoryId());
//        setmealLambdaQueryWrapper.eq(setmeal.getStatus()!=null,Setmeal::getStatus,setmeal.getStatus());
//        setmealLambdaQueryWrapper.orderByDesc(Setmeal::getUpdateTime);
//        //todo 为什么要用集合接收
//        List<Setmeal> list = setmealService.list(setmealLambdaQueryWrapper);
//        return R.success(list);
//    }
}
